Using eBook Reading Data to Generate Time-Based Information

ABSTRACT

Reading data from an eBook is used to generate time-based information. Timing reports are received from a plurality of clients. The timing reports describe reading time intervals for reading portions of an eBook on the clients. Timing reports from different clients describe reading time intervals for different overlapping portions of the eBook. The overlapping portions are analyzed to generate timing information. The timing information describes reading speeds for granular portions of the book that are smaller than the portions described in the reading time intervals. The timing information is stored. Timing information is provided to a client enabling the client to provide advanced features. The features include estimating a user&#39;s current reading position and providing an estimate of the time required by the user to finished reading a portion of the eBook.

FIELD OF DISCLOSURE

The invention generally relates to electronic books (eBooks) andparticularly relates to collecting and providing timing informationabout the reading of such books.

BACKGROUND INFORMATION

Many people are transitioning from reading physical books to readingeBooks, which have many advantages over physical books, such as moreportability, the ability to access the eBook from multiple electronicdevices, and text search capability. In addition, eBooks are also easierto purchase and are perceived as environmentally-friendly.

However, eBooks also suffer some drawbacks in comparison to physicalbooks. For example, eBooks lack physical cues to tell a reader his orher current relative location in the book. In a physical book, a readercan readily ascertain the reader's current reading location relative tothe entire book or another point by viewing the number of physical pagesalready read or remaining to be read. Readers use this information, forexample, to determine whether to start reading a new chapter in anallotted reading period or whether to purchase a new book beforedeparting on a trip. This information can be useful, but is still farfrom ideal since the reader may inaccurately estimate how long it willtake to finish reading a chapter or other portion of text.

Reading devices for eBooks address this issue by providing readers withinformation intended to substitute for the lack of physical pages. Forexample, an eBook reader may present the reader with a page count (e.g.,“Page 42 of 265”) or a user interface that visually represents thereader's current location in the eBook. This information is helpful butcan still be improved. For instance, the page count can be misleadingbecause different reading devices display differently-sized pages. As aresult, readers lack information they would have with physical books.

SUMMARY OF THE INVENTION

The above and other issues are addressed by a computer-implementedmethod, computer system, and non-transitory computer-readable storagemedium for using eBook reading data to generate time-based information.An embodiment of the method includes receiving timing reports from aplurality of clients. The timing reports describe reading time intervalsfor portions of an eBook read on the clients. Timing reports fromdifferent clients describe reading time intervals for differentoverlapping portions of the eBook. The method also includes analyzingthe overlapping portions described in the reading time intervals of thetiming reports for the eBook to generate timing information describingreading speeds for granular portions of the eBook smaller than theportions described in the reading time intervals. The generated timinginformation is stored.

An embodiment of the computer system for using eBook reading data togenerate time-based information includes a non-transitorycomputer-readable storage medium having executable computer programinstructions. The instructions include instructions for receiving timingreports from a plurality of clients. The timing reports describe readingtime intervals for portions of an eBook read on the clients. Timingreports from different clients describe reading time intervals fordifferent overlapping portions of the eBook. The instructions furtherinclude analyzing the overlapping portions described in the reading timeintervals of the timing reports for the eBook to generate timinginformation describing reading speeds for granular portions of the eBooksmaller than the portions described in the reading time intervals. Thegenerated timing information is stored. The computer system alsoincludes a processor for executing the computer program instructions.

An embodiment of the medium stores executable computer programinstructions for using eBook reading data to generate time-basedinformation. The instructions perform steps including receiving timingreports from a plurality of clients. The timing reports describe readingtime intervals for portions of an eBook read on the clients. Timingreports from different clients describe reading time intervals fordifferent overlapping portions of the eBook. The steps further includeanalyzing the overlapping portions described in the reading timeintervals of the timing reports for the eBook to generate timinginformation describing reading speeds for granular portions of the eBooksmaller than the portions described in the reading time intervals. Thegenerated timing information is stored.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a high-level block diagram illustrating an environment forusing eBook reading data to generate time-based information inaccordance with one embodiment.

FIG. 2 is a high-level block diagram illustrating an example of acomputer for use as a timing server or a client, in accordance with oneembodiment.

FIG. 3 is a high-level block diagram illustrating a detailed view of thetiming module of a client according to one embodiment

FIG. 4 is a high-level block diagram illustrating a detailed view of thetiming server according to one embodiment.

FIG. 5 is a diagram illustrating how clients paginating eBooksdifferently is used to generate reading speed information for portionsof eBooks according to one embodiment.

FIG. 6 is a flowchart illustrating a method of using eBook reading datato generate time-based information according to one embodiment.

FIG. 7 is a flowchart illustrating a method of estimating the timerequired for a user to read an unread portion of an eBook according toone embodiment

DETAILED DESCRIPTION

The figures (FIGS.) and the following description describe certainembodiments by way of illustration only. One skilled in the art willreadily recognize from the following description that alternativeembodiments of the structures and methods illustrated herein may beemployed without departing from the principles described herein.Reference will now be made to several embodiments, examples of which areillustrated in the accompanying figures. It is noted that whereverpracticable similar or like reference numbers may be used in the figuresand may indicate similar or like functionality.

FIG. 1 is a high-level block diagram illustrating an environment 100 forusing eBook reading data to generate time-based information inaccordance with one embodiment. As shown, the environment 100 includesmultiple clients 110 connected to a timing server 130 via a network 120.While only one timing server 130 and three clients 110 are shown in FIG.1 for clarity, embodiments can have multiple servers and many clients.Moreover, the timing server 130 may be implemented as cloud-basedservice distributed across multiple physical servers.

The clients 110 are electronic devices used by one or more users to readeBooks. A client 110 can be, for example, a mobile phone, desktop,laptop, or tablet computer, or a dedicated eBook reader (“eReader”). Theclient 110 may execute one or more applications that support activitiesincluding reading eBooks and browsing and obtaining content availablefrom servers on the network 120. An eBook is a form of electroniccontent that is primarily textual in nature. The content of an eBook maybe, for example, a novel, a textbook, or a reference book. As usedherein, the term “eBook” also includes other electronic content that isprimarily textual, such as magazines, journals, newspapers, or otherpublications.

The clients 110 include display screens that show portions of eBooks tothe users. The portion of text shown on a display screen at one time isreferred to as a “page” of the eBook. The amount of text shown on a pageby a given client 110 depends upon multiple variables including the sizeof client's display screen and characteristics of the text such astypeface, font size, margin spacing and line spacing. For example, theamount of text shown on a page by laptop computer with a large displayis typically significantly more than the amount of text shown on a pageby a mobile phone with a small display. Thus, the display of a laptopmight show 300 words at a time while the display of a mobile phone mightshow only 50 words at a time. The number of words shown on a page canalso change if the user makes the text larger or smaller.

The user of a client 110 changes the pages of an eBook by issuingpage-turn commands. The type of command issued by the user can varybased on the client 110. For example, some clients 110 have physicalpage turn buttons that the user presses to advance to the next orprevious page. Other clients 110 have touch-sensitive display screensand the user issues a page-turn command by gesturing on the screen.

In one embodiment, the clients 110 include timing modules 112 thatrecord the time intervals (i.e., elapsed time) between page-turncommands issued by the users. Depending upon the embodiment, the timingmodules 112 can be integrated into firmware executed by the clients 110,integrated into operating systems executed by the clients, or containedwithin applications executed by the clients.

During normal use of the client 110 for reading an eBook, the user willissue page-turn commands as the user reads each page and advances to thenext page. For clients 110 that replace the entire page of text inresponse to a page-turn command, the time interval between sequentialforward page-turn commands issued by a user is a proxy for the amount oftime it took the user to read the text on the page. Hence, the timeinterval is referred to as a “reading time interval.” The reading timeinterval will vary for different users having different reading speeds,and will also vary depending upon the amount of text shown on each pageand the complexity of the text. The timing modules 112 send timingreports to the timing server 130 describing the recorded reading timeintervals for pages of eBooks.

The timing server 130 is a computer or other electronic device that usesthe timing reports to generate timing information describing the eBooksor users. The timing server 130 may be operated by an entity thatprovides eBooks and other electronic content to the clients 110 or maybe operated by a different entity.

In general, the timing information generated by the timing server 130describes the time required to read a portion of an eBook. For example,the timing server 130 may use the timing reports received from thevarious clients 110 to determine the average time required by a group ofusers to read a given portion of an eBook. Further, the timing server130 can exploit the fact that different clients paginate eBooksdifferently, and that different timing reports describe differentoverlapping portions of the same eBook, to generate timing informationfor eBook portions more granular than the pages described in the timingreports. Thus, the timing information can indicate the time required byan average user to read a sentence or even a word in an eBook.

In one embodiment, the timing server 130 provides the timing informationto the timing modules 112 of the clients 110. The timing modules 112, inturn, use the timing information to provide timing data to the usersthat enhance the users' reading experiences. For example, a timingmodule 112 can use the timing information to estimate a user's currentreading position within a page and provide features, such asbookmarking, that use the position information. In addition, the timingmodule 112 can use the timing information to provide an estimate of thetime required by the user to finish reading the eBook or a portion ofthe eBook.

The network 120 represents the communication pathway between the timingserver 130 and clients 110. In one embodiment, the network 120 usesstandard communications technologies or protocols and can include theInternet. Thus, the network 120 can include links using technologiessuch as Ethernet, 802.11, worldwide interoperability for microwaveaccess (WiMAX), 2G/3G/4G mobile communications protocols, digitalsubscriber line (DSL), asynchronous transfer mode (ATM), InfiniBand, PCIExpress Advanced Switching, etc. Similarly, the networking protocolsused on the network 120 can include multiprotocol label switching(MPLS), the transmission control protocol/Internet protocol (TCP/IP),the User Datagram Protocol (UDP), the hypertext transport protocol(HTTP), the simple mail transfer protocol (SMTP), the file transferprotocol (FTP), etc. The data exchanged over the network 120 can berepresented using technologies or formats including image data in binaryform (e.g. Portable Network Graphics (PNG), the hypertext markuplanguage (HTML), the extensible markup language (XML), etc. In addition,all or some links can be encrypted using conventional encryptiontechnologies such as secure sockets layer (SSL), transport layersecurity (TLS), virtual private networks (VPNs), Internet Protocolsecurity (IPsec), etc. In another embodiment, the entities on thenetwork 120 can use custom or dedicated data communications technologiesinstead of, or in addition to, the ones described above.

FIG. 2 is a high-level block diagram illustrating an example of acomputer 200 for use as a timing server 130 or a client 110, inaccordance with one embodiment. Illustrated is at least one processor202 coupled to a chipset 204. The chipset 204 includes a memorycontroller hub 220 and an input/output (I/O) controller hub 222. Amemory 206 and a graphics adapter 212 are coupled to the memorycontroller hub 220, and a display device 218 is coupled to the graphicsadapter 212. A storage device 208, keyboard 210, pointing device 214,and network adapter 216 are coupled to the I/O controller hub 222. Otherembodiments of the computer 200 have different architectures. Forexample, the memory 206 is directly coupled to the processor 202 in someembodiments.

The storage device 208 is a non-transitory computer-readable storagemedium such as a hard drive, compact disk read-only memory (CD-ROM),DVD, or a solid-state memory device. The memory 206 holds instructionsand data used by the processor 202. The pointing device 214 is used incombination with the keyboard 210 to input data into the computer 200.The graphics adapter 212 displays images and other information on thedisplay device 218. In some embodiments, the display device 218 includestouch screen capability for receiving user input and selections. Thenetwork adapter 216 couples the computer system 200 to the network 120.Some embodiments of the computer 200 have different or other componentsthan those shown in FIG. 2. For example, the timing server 130 can beformed of multiple blade servers and lack a display device, keyboard,and other components.

The computer 200 is adapted to execute computer program modules forproviding functionality described herein. As used herein, the term“module” refers to computer program instructions and other logic used toprovide the specified functionality. Thus, a module can be implementedin hardware, firmware, or software. In one embodiment, program modulesformed of executable computer program instructions are stored on thestorage device 208, loaded into the memory 206, and executed by theprocessor 202.

FIG. 3 is a high-level block diagram illustrating a detailed view of thetiming module 112 of a client 110 according to one embodiment. As shownin FIG. 3, multiple modules are included within the timing module 112.In some embodiments, the functions are distributed among the modules ina different manner than described herein. Moreover, the functions areperformed by other entities in some embodiments, such as by the timingserver 130.

An interval measurement module 310 measures reading time intervalsbetween page-turn commands. In one embodiment, the interval measurementmodule 310 activates a timer upon detecting a page-turn command and usesthe timer to measure the time elapsed until a new page-turn command isdetected. The interval measurement module 310 stores the measured timeintervals in association with the pages of the eBooks to which theypertain.

Different embodiments of the interval measurement module 310 may measuretime intervals in various different ways. For example, the intervalmeasurement module 310 may measure only forward page-turn commandsbecause backward page-turn commands are less likely to be reflective ofa user's reading speed. The interval measurement module 310 may alsoomit measurement of page turn comments that are close in time to eventsthat signify the start or end of a reading session, such as timeintervals bordered by the turning on or off of the client 110. Inaddition, the interval measurement module 310 may measure intervalsbetween multiple page-turn commands and may activate the timer inresponse to different events, such as the display of a new page insteadof the detection of a page turn command.

A client interaction module 312 sends timing reports to the timingserver 130. The timing reports indicate the reading time intervals forthe pages of eBooks measured by the interval measurement module 310. Atiming report may include, for example, an identifier of the client 110sending the report, an identifier of the eBook being read on the client,an identifier of the user of the client, a description of the textdisplayed on the page associated with the report (i.e., the beginningand endpoints of the text on the page described by the associatedreading time interval), and the time interval itself. A timing reportmay describe time intervals for one or more pages. The information inthe timing report may be anonymous to avoid disclosing privateinformation about the user or client 110.

The client interaction module 312 may send the timing reportscontemporaneously with when the timing intervals are measured or sendmultiple reports in batch. For example, the client interaction module312 may store timing reports if network 120 connectivity is absent orlimited and then send the timing reports once connectivity becomesavailable, or send timing reports at the completion of a chapter orother location within the text. Likewise, the client interaction module312 may send timing reports upon initiating or deactivating of thereading functionality of the client 110.

In addition, the client interaction module 312 requests and receivestiming information from the timing server 130. The timing informationmay indicate, for example, average reading speeds for a group of usersof pages, sentences, words or other portions of text within eBooks. Thetiming information may also indicate the user's reading speed ordescribe other timing-related aspects of the eBook. “Reading speed”generally refers to the amount of text a user can read in a specifiedamount of time. For purposes of convenience, reading speed is oftendescribed herein as words per minute (WPM). However, reading speed canbe represented in other ways, such as an amount of time required to reada word or other portion of text.

A position estimation module 314 estimates the user's current readinglocation on a displayed page of an eBook. In one embodiment, theposition estimation module 314 estimates the user's reading locationbased on the user's reading speed. For example, the position estimationmodule 314 may determine the user's reading location by measuring thetime elapsed since the page was turned and comparing the elapsed timewith the user's reading speed to determine how far into the displayedpage the user has read. The estimated position may be used, e.g., toplace a bookmark at the estimated position based on a command from theuser or based on the occurrence of another event such as the userturning the client 110 off. For example, the position estimation module314 may place the bookmark at a paragraph located at the user'sestimated reading position.

A timing estimation module 316 estimates the time required for a user toread an unread portion of an eBook. In one embodiment, the timingestimation module 316 makes this estimate based on the user's determinedreading speed. For example, the timing estimation module 316 may makethe estimate based on the user's determined reading speed and the amountof text within the unread portion for which the estimate applies.

In another embodiment, the timing estimation module 316 also usesinformation received from the timing server 130 to make the estimate.For example, the timing estimation module 316 may make the estimate byusing the timing information to determine the average reading speed fora group of users that have read the portion, and scaling the averagespeed by a speed modifier that describes the user's reading speedrelative to the average reading speed of the group. Thus, if the averagetime to read a portion of text is 30 minutes, and the speed modifier forthe user is 150% (indicating that the user reads at 150% of the speed ofthe average reader), the timing estimation module 316 might estimatethat it would take the reader 20 minutes to read the portion. Thislatter embodiment is more precise than using only the user's readingspeed because it accounts for variances in average reading speed withinthe text. If a portion of the eBook is particularly difficult, thisdifficulty will be reflected in the timing information received fromtiming server 130 which, in turn, will result in a more precise estimatefor the user.

In one embodiment, the timing estimation module 316 estimates the timeit will require the user to read the remaining unread text in the eBook.For example, the module 316 may estimate the time required for the userto finish reading the eBook, a chapter of the eBook, a specified numberof pages, etc. The timing estimation module 316 may display thisestimate to the user. The user can use the time estimate to decidewhether to finish reading a chapter, whether to purchase a new eBook, orto make other decisions that are based in part on the timinginformation.

A time display module 318 uses information received from the timingserver 130 to display timing data to the user indicating the readingspeeds of different portions of eBooks. For example, the time displaymodule 318 may use color-coding or another technique to graphicallyillustrate the differences in average reading speed for differentportions of an eBook. The user can use this information to identifyportions that take longest to read which may in turn indicate theportions that are particularly thought-provoking. The time displaymodule 318 may combine the time display with other information, such asinformation indicating which portions are frequently highlighted byother readers, to provide additional insight for identifyingthought-provoking portions.

FIG. 4 is a high-level block diagram illustrating a detailed view of thetiming server 130 according to one embodiment. As shown in FIG. 4,multiple modules are included within the timing server 130. In someembodiments, the functions are distributed among the modules in adifferent manner than described herein. Moreover, the functions areperformed by other entities in some embodiments, such as by the client110 or timing module 112.

A timing database 410 stores timing reports received from the clients110. As previously mentioned, the timing reports include time intervalsand may also include other information such as a client identifier, auser identifier, an eBook identifier, and a description of the page ofthe eBook associated with the time interval. In one embodiment, thetiming database 410 stores the timing reports keyed by the useridentifier so that all reports associated with specific users can beidentified. The timing database 410 may also store the timing reportskeyed by eBook or portions of an eBook, by client 110 or by other keys.

In one embodiment, the timing database 410 also stores timinginformation generated by the timing server 130 from the received timingreports. This timing information may include information associated withspecific users, such as average or other reading speeds and speedmodifiers describing the users' reading speeds relative to the readingspeed of other users. In addition, the timing information may includeinformation associated with specific eBooks. The eBook timinginformation may include reading times (e.g., average reading times) forportions of an eBook. Thus, the eBook timing information may include theaverage reading times for entire eBooks, chapters of eBooks, andparagraphs, sentences, or words in the eBooks.

In one embodiment, the timing information in the timing database 410 isupdated as new timing reports are received from the users.Alternatively, the timing information may be updated periodically, aftera certain amount of time has passed, after a certain number of timingreports have been received, or based on other factors. The timinginformation may also be weighted based on the number of timing reportsreceived for a particular user/eBook or based on other factors.

A server interaction module 412 receives timing reports from the clients110 and stores the reports in the timing database 410. In addition, theserver interaction module 412 receives requests for timing informationfrom the clients 110 and provides information from the database 410 inresponse thereto. The requests from a client 110 may be, for example,requests for the reading speed of a user of the client, for the speedmodifier of the user, or for timing information associated with an eBookbeing read on that client.

A filtering module 414 filters timing reports received from the clients110 to remove reports that are likely erroneous or inaccurate. Thefiltering module 414 may filter out timing reports that indicateabnormally high or low reading time intervals. These timing reports mayresult from abnormalities such as the user rapidly flipping forwardthrough the pages of text or being interrupted while reading a page oftext. In one embodiment, the filtering module 414 compares reading timeintervals in the timing reports with lower and upper thresholds andfilters out timing reports not falling within the thresholds. Thethresholds can be based on the timing information stored in the timingdatabase or other factors. For example, the thresholds can be based onthe average reading time intervals for the text portions described bythe reports, on average reading time intervals for the type of client110 sending the report, average reading time intervals from the userthat sent the report, or average reading time intervals across multipleeBooks. Further, the filtering module 414 may filter timing reportsbased on criteria other than reading time intervals. For example, thefiltering module 114 may filter reports from a client 110 that sends anabnormally high volume of reports. The functions of filtering module 414may also be incorporated within the timing modules 112 of the clients110 or any other module.

An analysis module 416 analyzes the timing reports in the timingdatabase 410 and generates the timing information. The types of analysisand information generated by the analysis module 416 can vary indifferent embodiments. The analysis module 416 may generate readingspeed information for individual users of the clients. To this end, theanalysis module 416 calculates statistics from the user's timing reportsdescribing the user's reading speed. For example, the analysis module416 may calculate the user's average reading speed by dividing thenumber of words in a portion of one or more eBooks by the amount of timerequired by the user to read the portion. The portion of the eBook usedto perform the calculation can be a page or subset of pages in an eBook,an entire eBook, or multiple eBooks, depending upon the embodiment.

Similarly, the analysis module 416 may generate combined reading speedinformation for a group of users of the clients 110. As with individualreaders, the combined reading speed information is a statistical measuredescribing the time required by the group of users to read a portion ofone or more eBooks. For clarity, this description often refers to thecombined reading speed as being the average reading speed of the groupof users. However, the combined reading speed may be represented byother statistical measures, such as the median reading speed of theusers in the group.

The analysis module 416 may select the group of users for which thecombined reading speed information is generated based on a variety offactors. The analysis module 416 may select a group of users who haveread a particular eBook or set of eBooks. The analysis module 416 canuse this group of users to generate, e.g., the average reading speed ofthe group of users for the eBook. The analysis module 416 may alsoselect groups of users based on demographic information of the users,geographic locations of the users, etc.

The analysis module 416 may also generate speed modifiers that describeindividual users' reading speeds relative to a combined reading speed ofa group of users. In one embodiment, the speed modifier for a user isrepresented as a scale factor describing how much slower or faster theuser's reading speed is relative to the group's average reading speed.For example, if the user's reading speed is twice as fast as the averagereading speed of the group of users, the user's speed modifier may be“2”. Other embodiments represent the speed modifier using othertechniques.

Further, the analysis module 416 may generate reading speed informationassociated with specific portions of an eBook. In general, readingspeeds often vary over portions of an eBook. For example, the readingspeed might be slower for a portion of an eBook that includesmathematical equations or particularly dense prose than for otherportions of the eBook. Reading speed may also be determined for otherformats of information that are part of an eBook includingillustrations, formulas, footnotes, and any other common visual element.Hence, the analysis module 416 generates reading speed information thatdescribes the reading speeds of particular portions of eBooks relativeto other portions. In one embodiment, reading speed can be determinedfor formats of information within a portion of text. For example, timingserver 130 may calculate the amount of time that an average user spendslooking at illustrations or formulas in a portion of an eBook.

This reading speed information may be represented in multiple ways. Inone embodiment, the analysis module 416 specifies the reading speed fora particular portion (e.g., a chapter) as the average reading speed ofreaders of that chapter. For example, the analysis module 416 canspecify a reading speed of 50 WPM for a dense chapter, and of 150 WPMfor a different, easier-to-read, chapter. In another embodiment, theanalysis module 416 specifies the reading speed for a portion of aneBook as a scale factor relative to a base reading speed. For example,the analysis module 416 can specify that the reading speed of the densechapter is 50% of the average reading speed of a group of users for theentire eBook in which the chapter is contained.

Further, in one embodiment the analysis module 416 uses the fact thatdifferent clients 110 paginate eBooks differently to generate readingspeed information associated with portions of the eBooks more granularthan the pages, such as for sentences or words of an eBook. There may bemany clients 110, and the clients may paginate eBooks differently due tovariations in display screen size, font size, etc. Many of the pagesfrom different clients 110 partially overlap, which allows the analysismodule 416 to determine reading speeds for the overlapping portions.Given enough samples, this technique allows the analysis module 416 todetermine reading speeds for overlapping portions as small as a sentenceor word. In one embodiment, the analysis module 416 can determinewhether there are insufficient samples to calculate a reading speed fora portion of text and store a reading speed placeholder indicating thatno estimate is available. This placeholder may also be used if thevariance is too high in received timing reports and confidence is low inthe accuracy of the corresponding reading speed information. In oneembodiment, reading speed information is generated and a confidencelevel is assigned to the accuracy of the reading speed information. Aclient 110 can subsequently determine whether to make use of timinginformation generated having low confidence. The analysis module 416saves the generated reading speed information in association with therespective portions of the eBooks in the timing database 410. As aresult, portions of the eBooks have associated reading speeds that canbe used by the clients 110 or timing server 130 to determine, e.g., thetime required for a user to read a portion of an eBook or estimate theuser's reading position within the eBook.

FIG. 5 is a diagram illustrating how clients 110 paginating eBooksdifferently is used to generate reading speed information for portionsof eBooks according to one embodiment. FIG. 5 illustrates two clients500, 502. Horizontally adjacent to each client are a set of pages 510,512 of an eBook displayed by each respective client 500, 502. In thisillustration, client 500 displays pages with more text than the pagesdisplayed by the client 502. This difference in page size is illustratedby the portion numbers within the pages. First page 514 displayed byclient 500, shows portions 1-3 of the eBook, while first page 516displayed by client 502, bearing fewer words per page, shows onlyportions 1-2 of the eBook. Thus, pages 514 and 516 overlap in that theyboth contain portions 1-2.

The analysis module 416 may, for example, determine the average time toread portion 3 as the difference between the average time required by agroup of users to read page 514 showing portions 1-3 and the averagetime required by a group of users to read page 516 showing portions 1-2.The analysis module 416 saves the determined reading speed inassociation with portion 3 in the timing database 410. The analysismodule 416 may further refine the reading speed information byaccounting for the speed modifiers of the individual users whencomparing the times required to read the various overlapping pages.

Other methods of generating reading speed information for a portion ofan eBook are also possible. For example, for each of the clients 110,the analysis module 416 may calculate a coarse time per word value bysimply dividing the reported reading time by the number of words on thedisplayed page. Using this information for a plurality of clients, amore accurate time for a word may be calculated by averaging thecalculated time per word for the plurality of clients. For a given word,this average time per word calculation may be limited to a specificinstance of the word in an eBook, all instances of the word in an eBook,or all instances of the word in a plurality of eBooks.

FIG. 6 is a flowchart illustrating a method of using eBook reading datato generate time-based information according to one embodiment. Whilethis description ascribes the steps of the method to the timing server130, the clients 110 or other entities can perform some or all of thesteps in other embodiments. In addition, the method can perform thesteps in different orders or include different steps.

In step 610, the timing server 130 receives timing reports from theclients 110 describing the reading time intervals for portions (e.g.,pages) of eBooks. The reports may include identifiers of the client 110,user, and eBook, a description of the text displayed on the pageassociated with the report, and the time interval. Some of the timingreports from the clients 110 describe reading time intervals fordifferent, but overlapping, portions of the same eBook. In step 612, thetiming server 130 filters the reports to remove reports that are likelyerroneous or inaccurate, and stores the remaining reports in the timingdatabase 410.

In step 614, the timing server 130 analyzes the timing reports togenerate the timing information. This analysis 614 may includegenerating reading speed information for individual users and for groupsof users. For example, the timing server 130 may determine the averagereading speed of a group of users for an eBook and determine a speedmodifier that describes an individual user's reading speed relative tothe group's average speed. In addition, in step 616, the timing server130 uses the fact that different clients 110 paginate eBooksdifferently, thereby producing overlapping timing reports, to determinereading speeds associated with portions of eBooks more granular than theportions described by the reading time intervals, such as paragraphs,sentences, and words. In step 618, the timing server 130 stores thetiming information in the timing database 610.

FIG. 7 is a flowchart illustrating a method of estimating the timerequired for a user to read an unread portion of an eBook according toone embodiment. While this description ascribes the steps of the methodto the timing estimation module 316 of the client, modules of the timingserver 130 or other entities can perform some or all of the steps inother embodiments. In addition, the method can perform the steps indifferent orders or include different steps.

In step 710, the timing estimation module 316 identifies the unreadportion of an eBook (i.e., a portion not yet read by the user) for whichthe time estimate is to be made. For example, the portion may span fromthe user's current reading position to a subsequent point, such as theend of a chapter or the end of the eBook. In step 712, the timingestimation module 316 determines the reading speeds associated with theunread portion. The module 316 may make this determination, for example,by querying the timing server 130 for timing information associated withthe unread portion. The timing information may indicate the averagereading speed of a group of users for the unread portion as a whole orfor more granular text within the portion, such as for sentences orwords. In step 714, the timing estimation module 316 modifies thereading speeds for the unread portion to account for the user's readingspeed relative to the average reading speed. In step 716, the timingestimation module 316 uses the modified reading speed to estimate thetime required for the user to read the unread portion.

Some portions of above description describe the embodiments in terms ofalgorithmic processes or operations. These algorithmic descriptions andrepresentations are commonly used by those skilled in the dataprocessing arts to convey the substance of their work effectively toothers skilled in the art. These operations, while describedfunctionally, computationally, or logically, are understood to beimplemented by computer programs comprising instructions for executionby a processor or equivalent electrical circuits, microcode, or thelike. Furthermore, it has also proven convenient at times, to refer tothese arrangements of functional operations as modules, without loss ofgenerality. The described operations and their associated modules may beembodied in software, firmware, hardware, or any combinations thereof.

As used herein any reference to “one embodiment” or “an embodiment”means that a particular element, feature, structure, or characteristicdescribed in connection with the embodiment is included in at least oneembodiment. The appearances of the phrase “in one embodiment” in variousplaces in the specification are not necessarily all referring to thesame embodiment.

Some embodiments may be described using the expression “coupled” and“connected” along with their derivatives. It should be understood thatthese terms are not intended as synonyms for each other. For example,some embodiments may be described using the term “connected” to indicatethat two or more elements are in direct physical or electrical contactwith each other. In another example, some embodiments may be describedusing the term “coupled” to indicate that two or more elements are indirect physical or electrical contact. The term “coupled,” however, mayalso mean that two or more elements are not in direct contact with eachother, but yet still co-operate or interact with each other. Theembodiments are not limited in this context.

As used herein, the terms “comprises,” “comprising,” “includes,”“including,” “has,” “having” or any other variation thereof, areintended to cover a non-exclusive inclusion. For example, a process,method, article, or apparatus that comprises a list of elements is notnecessarily limited to only those elements but may include otherelements not expressly listed or inherent to such process, method,article, or apparatus. Further, unless expressly stated to the contrary,“or” refers to an inclusive or and not to an exclusive or. For example,a condition A or B is satisfied by any one of the following: A is true(or present) and B is false (or not present), A is false (or notpresent) and B is true (or present), and both A and B are true (orpresent).

In addition, use of the “a” or “an” are employed to describe elementsand components of the embodiments herein. This is done merely forconvenience and to give a general sense of the disclosure. Thisdescription should be read to include one or at least one and thesingular also includes the plural unless it is obvious that it is meantotherwise.

Upon reading this disclosure, those of skill in the art will appreciatestill additional alternative structural and functional designs for asystem and a process for receiving reading data and analyzing thereading data to determine related timing information. Thus, whileparticular embodiments and applications have been illustrated anddescribed, it is to be understood that the present invention is notlimited to the precise construction and components disclosed herein andthat various modifications, changes and variations which will beapparent to those skilled in the art may be made in the arrangement,operation and details of the method and apparatus disclosed hereinwithout departing from the spirit and scope as defined in the appendedclaims.

1. A computer-implemented method of estimating a time required for areader to read a portion of an eBook, comprising: identifying an unreadportion of the eBook, the unread portion not having been read by thereader; determining a combined reading speed associated with the eBookfor a plurality of other readers; estimating a time required for thereader to read the unread portion of the eBook based at least in part onthe combined reading speed of the plurality of other readers; andproviding the estimate of the time required for the reader to read theunread portion of the eBook to the reader.
 2. The method of claim 1,wherein the estimating further comprises: determining a reading speed ofthe reader; and estimating the time required for the reader to read theunread portion of the eBook based at least in part on the reading speedof the reader.
 3. The method of claim 2, wherein determining the readingspeed of the reader comprises: determining the reading speed of thereader responsive at least in part to time intervals between page-turncommands issued by the reader and amounts of text shown on pages of theeBook.
 4. The method of claim 2, wherein determining the reading speedof the reader comprises: determining a plurality of reading speeds forthe user responsive to a plurality of different formats of informationcontained in the eBook.
 5. The method of claim 1, wherein estimating thetime required for the reader to read the unread portion of the eBookbased at least in part on the combined reading speed of the plurality ofother readers further comprises: estimating the time required for thereader to read the unread portion of the eBook responsive to adifference between a reading speed of the reader and the combinedreading speed of the plurality of other readers.
 6. The method of claim1, further comprising: providing a timing report to a timing server viaa network, the timing report indicating a time spent by the reader toread a portion of the eBook; and receiving the combined reading speedassociated with the eBook from the timing server via the network, thetiming server determining the combined reading speed responsive to aplurality of timing reports indicating times spent by other readers toread the portion of the eBook provided to the timing server.
 7. Themethod of claim 1, wherein determining the combined reading speedcomprises: determining a combined reading speed for the unread portionof the eBook for the plurality of other readers.
 8. An electronic devicefor estimating a time required for a reader to read a portion of aneBook, comprising: a processor for executing computer instructions; anda non-transitory computer-readable storage medium storing executablecomputer instructions comprising instructions for: identifying an unreadportion of the eBook, the unread portion not having been read by thereader; determining a combined reading speed associated with the eBookfor a plurality of other readers; estimating a time required for thereader to read the unread portion of the eBook based at least in part onthe combined reading speed of the plurality of other readers; andproviding the estimate of the time required for the reader to read theunread portion of the eBook to the reader.
 9. The device of claim 8,wherein the estimating further comprises: determining a reading speed ofthe reader; and estimating the time required for the reader to read theunread portion of the eBook based at least in part on the reading speedof the reader.
 10. The device of claim 9, wherein determining thereading speed of the reader comprises: determining the reading speed ofthe reader responsive at least in part to time intervals betweenpage-turn commands issued by the reader and amounts of text shown onpages of the eBook.
 11. The device of claim 9, wherein determining thereading speed of the reader comprises: determining a plurality ofreading speeds for the user responsive to a plurality of differentformats of information contained in the eBook.
 12. The device of claim8, wherein estimating the time required for the reader to read theunread portion of the eBook based at least in part on the combinedreading speed of the plurality of other readers further comprises:estimating the time required for the reader to read the unread portionof the eBook responsive to a difference between a reading speed of thereader and the combined reading speed of the plurality of other readers.13. The device of claim 8, further comprising instructions for:providing a timing report to a timing server via a network, the timingreport indicating a time spent by the reader to read a portion of theeBook; and receiving the combined reading speed associated with theeBook from the timing server via the network, the timing serverdetermining the combined reading speed responsive to a plurality oftiming reports indicating times spent by the other readers to read theportion of the eBook provided to the timing server.
 14. The device ofclaim 8, wherein determining the combined reading speed comprises:determining a combined reading speed for the unread portion of the eBookfor the plurality of other readers.
 15. A non-transitorycomputer-readable medium storing executable computer programinstructions for estimating a time required for a reader to read aportion of an eBook, comprising instructions for: identifying an unreadportion of the eBook, the unread portion not having been read by thereader; determining a combined reading speed associated with the eBookfor a plurality of other readers; estimating a time required for thereader to read the unread portion of the eBook based at least in part onthe combined reading speed of the plurality of other readers; andproviding the estimate of the time required for the reader to read theunread portion of the eBook to the reader.
 16. The medium of claim 15,wherein the estimating further comprises: determining a reading speed ofthe reader; and estimating the time required for the reader to read theunread portion of the eBook based at least in part on the reading speedof the reader.
 17. The medium of claim 16, wherein determining thereading speed of the reader comprises: determining the reading speed ofthe reader responsive at least in part to time intervals betweenpage-turn commands issued by the reader and amounts of text shown onpages of the eBook.
 18. The medium of claim 15, wherein estimating thetime required for the reader to read the unread portion of the eBookbased at least in part on the combined reading speed of the plurality ofother readers further comprises: estimating the time required for thereader to read the unread portion of the eBook responsive to adifference between a reading speed of the reader and the combinedreading speed of the plurality of other readers.
 19. The medium of claim15, further comprising instructions for: providing a timing report to atiming server via a network, the timing report indicating a time spentby the reader to read a read portion of the eBook; and receiving thecombined reading speed associated with the eBook from the timing servervia the network, the timing server determining the combined readingspeed responsive to a plurality of timing reports indicating times spentby the other readers to read the portion of the eBook provided to thetiming server.
 20. The medium of claim 15, wherein determining thecombined reading speed comprises: determining a combined reading speedfor the unread portion of the eBook for the plurality of other readers.